We connect to the changed signal in _init() but never actually disconnect from
it. The callback has a reference to "this" which results into the background
object not getting garbage collected.
Fix that leaks by disconnecting in _destroy()
https://bugzilla.gnome.org/show_bug.cgi?id=709263
this._cancellable = new Gio.Cancellable();
this.isLoaded = false;
- this._settings.connect('changed', Lang.bind(this, function() {
- this.emit('changed');
- }));
+ this._settingsChangedSignalId = this._settings.connect('changed', Lang.bind(this, function() {
+ this.emit('changed');
+ }));
this._load();
},
this.actor.disconnect(this._destroySignalId);
this._destroySignalId = 0;
+
+ if (this._settingsChangedSignalId != 0)
+ this._settings.disconnect(this._settingsChangedSignalId);
+ this._settingsChangedSignalId = 0;
},
_setLoaded: function() {